package com.lesama.integer;

public class Interview {

    /*
        Integer包装类的构造函数， 会先判断构造的数字范围是否在-128到127之间
        如果装箱的数据不在-128 ~ 127之间，则返回一个新的对象
        如果装箱的数据在-128 ~ 127之间，则不会创建一个新的对象，而是从底层数组IntegerCache.cache中，
        取出一个提前创建好的Integer对象，
        因此，如果要比较包装类的值，使用equals方法

        public static Integer valueOf(int i) {
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }
     */

    public static void main(String[] args) {
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1 == i2);
        Integer i3 = 128;
        Integer i4 = 128;
        System.out.println(i3 == i4);

        Long l1 = 127l;
        Long l2 = 127l;
        System.out.println(l1 == l2);
        Long l3 = 128l;
        Long l4 = 128l;
        System.out.println(l3 == l4);
        System.out.println(l1.equals(l2));
        System.out.println(l3.equals(l4));
    }
}
